#ifndef SYSTEM_PATH_H
#define SYSTEM_PATH_H

#include <string>
#include <filesystem>

class SystemPath
{
public:
    static std::string ProjectPath()
    {
        static std::string projpath = PROJECT_ROOT_DIR;
        return projpath;
    }
    static std::string ExePath()
    {
        static std::string exepath = std::filesystem::current_path().generic_string();
        return exepath;
    }

    static bool isAbsolutePath(const std::string & path);
    static bool isRelativePath(const std::string & path);
    static bool isPathExist(const std::string & path);
    static bool isPathDirectory(const std::string & path);
    static bool isPathRegularFile(const std::string & path);
};

inline std::string current_project_path()
{
    return SystemPath::ProjectPath();
}

inline std::string current_exe_path()
{
    return SystemPath::ExePath();
}

inline std::string target_objs_path()
{
    return current_project_path() + "/target_objs";
}

#endif // SYSTEM_PATH_H
